/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ConexionBD;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.StringTokenizer;
/**
 *
 * @author CARLOS OROZCO
 * 
 */

//Aun me encuentro trabajando en el Servidor sobre las imagenes ...., las consultas ya estan listas!!

public class Servidor{
    
    private ServerSocket server;
    ArrayList arregloFilas = new ArrayList();

    public Servidor() {
        try {       
            server = new ServerSocket(2014,2);
        } catch (IOException ex) {
            System.out.println("No se pudo Crear el Socket Server");
        }
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        Servidor n = new Servidor();
        while(true) n.trabajar();
        
    }
    
    public void trabajar(){
        
        conexion connection = new conexion();
        try {
            
            System.out.println("Esperando q un cliente se conecte");
            Socket socketCliente = server.accept();
            System.out.println("un cliente se conectó");
            InputStream entrada = socketCliente.getInputStream();
            OutputStream salida = socketCliente.getOutputStream();
            
            DataInputStream entradaDatos = new DataInputStream (entrada);
            DataOutputStream salidaDatos = new DataOutputStream (salida);
            
            
            String Consulta = entradaDatos.readUTF();
            StringTokenizer tokens = new StringTokenizer(Consulta,"#");
            int cantColumns = Integer.parseInt(tokens.nextToken());
            if(cantColumns==-1){
                String rutaImagen = tokens.nextToken();
                System.out.println("El cliente solicita la imagen con ruta: "+rutaImagen);                
                procesarImagen(rutaImagen, salida);
            }else{
                String consulta = tokens.nextToken();
                System.out.println("El cliente envio la consulta: "+consulta);
                connection.conectar();
                ResultSet ejecutarConsulta = connection.ejecutarConsulta(consulta);
                String consultaCompleta="";

                while(ejecutarConsulta.next()){
                    for(int i = 1;i<=cantColumns;i++){
                        consultaCompleta += ejecutarConsulta.getString(i)+" ";
                    }
                    consultaCompleta += "\n";
                }
                salidaDatos.writeUTF(consultaCompleta);
                connection.desconectar();
            }
        } catch (Exception ex) {
            System.out.println("Ocurrio un error en bytes");
            connection.desconectar();
        }
    
    }
    
    //Falta Completar
    public void procesarImagen(String rutaImagen, OutputStream salida){
    
    }
    
    
    
}
